home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / FILES.SWG / 0039_Checking File Open.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-21  |  3KB  |  87 lines

  1. {
  2. From: GUY MCLOUGHLIN
  3. Subj: Checking file open
  4.  
  5. I'm looking for a way of detecting if a file is currently open,
  6. so my ExitProc can close it when open and not fail when trying
  7. to close a file that is not open.
  8.  
  9.               (* Public-domain demo to check a file variable's        *)
  10.               (* current file mode. Guy McLoughlin - Oct '93.         *)
  11. }
  12.  
  13. program Test_FileMode_Demo;
  14. uses
  15.  dos;
  16.  
  17.   (**** Display current filemode for a file variable.                 *)
  18.   (*                                                                  *)
  19.   procedure DisplayFileMode({input } const fi_IN);
  20.   begin
  21.     case textrec(fi_IN).mode of
  22.       FMclosed : writeln('* File closed');
  23.       FMinput  : writeln('* File open in read-only  mode');
  24.       FMoutput : writeln('* File open in write-only mode');
  25.       FMinout  : writeln('* File open in read/write mode')
  26.     else
  27.       writeln('* File not assigned')
  28.     end
  29.   end;        (* DisplayFileMode.                                     *)
  30.  
  31.  
  32.   (**** Check for IO file errors.                                     *)
  33.   (*                                                                  *)
  34.   procedure CheckForIOerror;
  35.   var
  36.     in_Error : integer;
  37.   begin
  38.     in_Error := ioresult;
  39.     if (ioresult <> 0) then
  40.       begin
  41.         writeln('Error creating file');
  42.         halt(1)
  43.       end
  44.   end;        (* CheckForIOerror.                                     *)
  45.  
  46.  
  47. var
  48.   fi_Temp1 : text;
  49.   fi_Temp2 : file;
  50.  
  51. BEGIN
  52.               (* Demo filemodes for a TEXT file variable.             *)
  53.   writeln('TEXT file variable test');
  54.   DisplayFileMode(fi_Temp1);
  55.   assign(fi_Temp1, 'TEST.DAT');
  56.   DisplayFileMode(fi_Temp1);
  57.   {$I-} rewrite(fi_Temp1); {$I+}
  58.   CheckForIOerror;
  59.   DisplayFileMode(fi_Temp1);
  60.   {$I-} close(fi_Temp1); {$I+}
  61.   CheckForIOerror;
  62.   DisplayFileMode(fi_Temp1);
  63.  
  64.               (* Demo filemodes for an UNTYPED file variable.         *)
  65.   writeln;
  66.   writeln('UNTYPED file variable test');
  67.   DisplayFileMode(fi_Temp2);
  68.   assign(fi_Temp2, 'TEST.DAT');
  69.   DisplayFileMode(fi_Temp2);
  70.   {$I-} rewrite(fi_Temp2); {$I+}
  71.   CheckForIOerror;
  72.   DisplayFileMode(fi_Temp2);
  73.   {$I-} close(fi_Temp2); {$I+}
  74.   CheckForIOerror;
  75.   DisplayFileMode(fi_Temp2)
  76. END.
  77.  
  78.   *** NOTE: If you are not using version 7 of Turbo Pascal, change
  79.             the input parameter of the DisplayFileMode routine from
  80.             a CONSTANT parameter to a VAR parameter.
  81.  
  82.               ie: TP7+ : DisplayFileMode({input } const fi_IN);
  83.  
  84.                   TP4+ : DisplayFileMode({input } var fi_IN);
  85.  
  86.                                - Guy
  87.